﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Domain; //подключение Domain
using Session; //подключение Session
using Notif; //подключение Notif
using System.Net; //подключение Net
using System.IO; //подключение IO

namespace Log_Count
{
    public partial class FormLgCntDH : Form
    {
        BrokerLgCnt b_LgCnt = new BrokerLgCnt(); // объявление BrokerLgCnt
        public FormLgCntDH()
        {
            InitializeComponent();
        }

        private void LgCnt_Insr_sBt_Ex_Click(object sender, EventArgs e) // закрытие формы
        {
            FClose(); // вызов функции закрытия
        }

        private void FormLgCntInsr_FormClosed(object sender, FormClosedEventArgs e) // закрытие формы
        {
            FClose(); // вызов функции закрытия
        } 

        private void LgCnt_Insr_sBt_Insr_Click(object sender, EventArgs e) // при нажатии кнопки "Добавить"
        {
            try
            {
                Dm_Count NewCnt = new Dm_Count(); // объявление Dm_Count как NewCnt
                Dm_Count OldCnt = new Dm_Count(); // объявление Dm_Count как OldCnt
                Dm_Pers prs = new Dm_Pers(); // объявление Dm_Pers


                OldCnt.Id_count = Convert.ToInt32(label7.Text); // присвоение значений OldCnt.Id_count из label7.Text

                prs = LgCnt_Insr_cBE_Prs.SelectedItem as Dm_Pers; // присвоение prs значений из LgCnt_Insr_cBE_Prs

                NewCnt.Date_set = DateTime.Now;
                NewCnt.Id_stat = 2;
                //NewCnt.Date_set = Convert.ToDateTime(LgCnt_Insr_dE_DtSt.Text); // присвоение значений NewCnt.Date_set из LgCnt_Insr_dE_DtSt.Text
                //NewCnt.Date_ready = Convert.ToString(LgCnt_Insr_dE_DtRd.Text); // присвоение значений NewCnt.Date_ready из LgCnt_Insr_dE_DtRd.Text
                //NewCnt.Delivery = LgCnt_Insr_tE_DtDlv.Text; // присвоение значений NewCnt.Delivery из LgCnt_Insr_tE_DtDlv.Text
                //NewCnt.Failure = "no"; // присвоение значения NewCnt.Delivery
                /*
                if (LgCnt_Insr_ckE_Falr.Checked == true) // если стоит галочка на "Отказ", то
                {
                    NewCnt.Failure = "yes"; // присвоение значения NewCnt.Failure
                    NewCnt.Note = LgCnt_Insr_tE_Nt.Text; // присвоение значений dlv.Date из
                    NewCnt.Date_ready = "Отказ"; // присвоение значения NewCnt.Date_ready
                    NewCnt.Delivery = "Отказ"; // присвоение значения NewCnt.Delivery
                }

                */
                b_LgCnt.UpdateDH(OldCnt, NewCnt, prs); // вызов функции на редактирование записи

                MessNotif.Informing("Запись успешно отредактирована.", "Запись отредактирована"); // информирование о редактирование записи 

                FClose(); // вызов функции закрытия
            }

            catch (Exception ex) // если не добавилось
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void FormLgCntInsr_Load(object sender, EventArgs e) // заполнение ComboBox при открытие формы
        {
            LgCnt_Insr_cBE_Prs.Properties.Items.AddRange(b_LgCnt.FillComboBoxPers()); // заполнение FillComboBoxPers
        }

        private void FClose() // объявление функции для закрытия
        {
            LgCnt_Insr_cBE_Prs.Properties.Items.Clear(); // отчистка LgCnt_Insr_cBE_Prs
            this.Hide(); // закрытие формы
        }

        private void LgCnt_Insr_sBt_DwlCnt_Click(object sender, EventArgs e) // нажатие на кнопку "скачать"
        {
            string FTPServer = "node100.net2ftp.ru";
            string fileNameToDownload = "";//тут должен быть результат запроса 
            string user = "whopper94@ya.ru";
            string password = "289bd974bcf0";

            SaveFileDialog Download = new SaveFileDialog();
            string ReadResFilePlace = null;
            Download.Filter = "word file (*.docx; *.doc)|*.docx; *.doc |All files (*.*)|*.*";
            Download.FileName = fileNameToDownload;
            DialogResult drs = Download.ShowDialog();
            ReadResFilePlace = Download.FileName; //считываем путь к файлу с результатом

            if (ReadResFilePlace != String.Empty)
            {
                Console.WriteLine(ReadResFilePlace);
            }

            FtpWebRequest request = FtpWebRequest.Create(new Uri(@"ftp://" + FTPServer + @"/" + fileNameToDownload)) as FtpWebRequest;
            request.UseBinary = true;
            request.KeepAlive = false;
            request.Method = WebRequestMethods.Ftp.DownloadFile;
            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(password))
                request.Credentials = new NetworkCredential(user, password);

            FtpWebResponse response = request.GetResponse() as FtpWebResponse;
            Stream responseStream = response.GetResponseStream();
            FileStream outputStream = new FileStream(ReadResFilePlace, FileMode.Create);

            int bufferSize = 1024;
            int readCount;
            byte[] buffer = new byte[bufferSize];

            readCount = responseStream.Read(buffer, 0, bufferSize);
            while (readCount > 0)
            {
                outputStream.Write(buffer, 0, readCount);
                readCount = responseStream.Read(buffer, 0, bufferSize);
            }
            string statusDescription = response.StatusDescription;
            responseStream.Close();
            outputStream.Close();
            response.Close();
        }
    }
}
